package com.ia.util;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.StringTokenizer;

public class lectorEstaciones {

    private final int numLineas;
    private final int nTrasbordos;
    private int[] nEstaciones;
    private String[][] lineas;
    private String[][] trasbordos;
    private float[][] g;
    private float[][] h;

    public lectorEstaciones(int numLineas, int nTrasbordos) {
        this.numLineas = numLineas;
        this.nTrasbordos = nTrasbordos;
    }

    public void leerEstaciones() {
        FileReader fr = null;
        try {
            fr = new FileReader("estaciones.txt");
            BufferedReader lector = new BufferedReader(fr);

            nEstaciones = new int[this.getNumLineas()];
            String linea = lector.readLine();
            int numEstaciones = 0;
           
            StringTokenizer st = new StringTokenizer(linea,"-");            
            for (int i = 0; i < nEstaciones.length; i++) {
                if (st.hasMoreElements()){
                    linea = (String) st.nextElement();
                }
                int index = linea.indexOf(' ');              
                if (index==-1){
                    index=2;
                }
                        
                nEstaciones[i] = Integer.parseInt(linea);
                if (nEstaciones[i] > numEstaciones) {
                    numEstaciones = nEstaciones[i];
                }
                index++;
                
               
            }

            lineas = new String[this.getNumLineas()][numEstaciones];
            g = new float[this.getNumLineas()][numEstaciones];
            int j;
            int index;
            for (int i = 0; i < this.getNumLineas(); i++) {
                j = 0;
                while (j < nEstaciones[i]) {
                    linea = lector.readLine();
                    st = new StringTokenizer(linea,"-");                   
                    lineas[i][j] = (String) st.nextElement();
                    String a= (String) st.nextElement();
                    g[i][j] = Float.parseFloat(a);
                    j++;
                }
                for (int k = j; k < numEstaciones; k++) {
                    lineas[i][k] = "";
                    g[i][j] = 0;
                }
            }
            
            trasbordos = new String[this.getnTrasbordos()][6];
            for(int i = 0; i < trasbordos.length; i++) {
                linea = lector.readLine();
                st = new StringTokenizer(linea,"-");
                for(j = 0; j < 6; j++) {                   
                    trasbordos[i][j] = (String) st.nextElement();                    
                }
            }
            
            int totalEstaciones = 0;
            for(int i = 0; i < nEstaciones.length; i++) totalEstaciones += nEstaciones[i];
            h = new float[this.getNumLineas()][totalEstaciones];
            for(int i = 0; i < h.length; i++) {
                for(j = 0; j < h[i].length; j++) {
                    h[i][j] = Float.parseFloat(lector.readLine());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                fr.close();
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
    }

    /**
     * @return the numLineas
     */
    public int getNumLineas() {
        return numLineas;
    }

    /**
     * @return the nTrasbordos
     */
    public int getnTrasbordos() {
        return nTrasbordos;
    }

    /**
     * @return the nEstaciones
     */
    public int[] getnEstaciones() {
        return nEstaciones;
    }

    /**
     * @param nEstaciones the nEstaciones to set
     */
    public void setnEstaciones(int[] nEstaciones) {
        this.nEstaciones = nEstaciones;
    }

    /**
     * @return the lineas
     */
    public String[][] getLineas() {
        return lineas;
    }

    /**
     * @param lineas the lineas to set
     */
    public void setLineas(String[][] lineas) {
        this.lineas = lineas;
    }

    /**
     * @return the trasbordos
     */
    public String[][] getTrasbordos() {
        return trasbordos;
    }

    /**
     * @param trasbordos the trasbordos to set
     */
    public void setTrasbordos(String[][] trasbordos) {
        this.trasbordos = trasbordos;
    }

    /**
     * @return the g
     */
    public float[][] getG() {
        return g;
    }

    /**
     * @param g the g to set
     */
    public void setG(float[][] g) {
        this.g = g;
    }

    /**
     * @return the h
     */
    public float[][] getH() {
        return h;
    }

    /**
     * @param h the h to set
     */
    public void setH(float[][] h) {
        this.h = h;
    }

}
